home *** CD-ROM | disk | FTP | other *** search
- // pipestream.h -*- C++ -*- socket library
- // Copyright (C) 1992,1993 Gnanasekaran Swaminathan <gs4t@virginia.edu>
- //
- // Permission is granted to use at your own risk and distribute this software
- // in source and binary forms provided the above copyright
- // notice and this paragraph are preserved on all copies.
- // This software is provided "as is" with no express or implied warranty.
- //
- // Version: 31Jan93 1.3
-
- #ifndef _PIPESTREAM_H
- #define _PIPESTREAM_H
-
- #include <sockstream.h>
-
- class ipipestream: public isockstream {
- public:
- ipipestream (const char* cmd, ostream* tied=0);
- };
-
- class opipestream: public osockstream {
- public:
- opipestream (const char* cmd, ostream* tied=0);
- };
-
- class iopipestream: public iosockstream {
- private:
- iopipestream(const iopipestream& sp) {}
- iopipestream& operator = (iopipestream&) { return *this; }
-
- protected:
- int sp[2]; // socket pair
- // childs pid if this is parent and
- // 0 if this is child if object is created through
- // iopipstream (sockbuf::type, int).
- // -1 otherwise;
- int cpid;
- iopipestream* next; // next in the chain
-
- static iopipestream* head; // list to take care of by fork()
-
- public:
- iopipestream(sockbuf::type ty=sockbuf::sock_stream, int proto=0);
- iopipestream(const char* cmd, ostream* tied=0);
-
- int pid () const { return cpid; } // returns cpid
- static int fork(); // sets cpid of all iopipestream* in the head
- };
-
- #endif _PIPESTREAM_H
-